﻿
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Coffee.Lists;

namespace Coffee
{
    public partial class Supplier : iControls.BaseForm.FormEditor
    {
        #region Variable
        clsLST_Supplier objSupp = new clsLST_Supplier();
        #endregion
        #region contructor
        public Supplier()
        {
            InitializeComponent();
        }
        #endregion



        #region functions
        private Boolean IsBeforsave()
        {
            try
            {
                grvSupplier.PostEditor();
                grvSupplier.UpdateCurrentRow();
                if (grdSupplier.DataSource == null || (grdSupplier.DataSource as DataTable).Rows.Count <= 0)
                {
                    MessageBox.Show("Bạn chưa nhập dữ liệu");
                    grvSupplier.MoveLastVisible();
                    return false;
                }
                return true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private void SaveData()
        {
            try
            {
                objSupp.Update(grdSupplier.DataSource as DataTable);
                (grdSupplier.DataSource as DataTable).AcceptChanges();
                MessageBox.Show("Chương trình cập nhật thành công!");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private Boolean IsBeforDel()
        {
            try
            {
                grvSupplier.PostEditor();
                grvSupplier.UpdateCurrentRow();
                if (TSoft.Cvert.ToInt32(grvSupplier.GetDataRow(grvSupplier.FocusedRowHandle)["SupplierID"], Int32.MinValue) <= 0)
                {
                    MessageBox.Show("Bạn chưa chọn dữ liệu để xoá");
                    return false;
                }
                return true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private void DeleteData()
        {
            try
            {
                if (MessageBox.Show("Bạn có thật sự muốn xoá nhà cung cấp <" + TSoft.Cvert.ToString(grvSupplier.GetDataRow(grvSupplier.FocusedRowHandle)["Name"], "") + "> không ?", "Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
                {
                    return;
                }
                objSupp.FillData(grvSupplier.GetDataRow(grvSupplier.FocusedRowHandle));
                objSupp.OnDelete();
                grvSupplier.DeleteSelectedRows();
                //grvSupplier.UpdateCurrentRow();
                (grdSupplier.DataSource as DataTable).AcceptChanges();
                grvSupplier.RefreshData();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion

        #region Event


        public override void OnRenew(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            try
            {
                grvSupplier.OptionsBehavior.Editable = true;
                grvSupplier.OptionsView.NewItemRowPosition = DevExpress.XtraGrid.Views.Grid.NewItemRowPosition.Bottom;
                grvSupplier.MoveLastVisible();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Chương trình phát sinh lỗi: " + e.ToString() + "\nVui lòng liên hệ với bộ phận quản trị gần nhất");
            }
        }
        public override void  OnEdit(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            try
            {
                if (grdSupplier.DataSource != null && (grdSupplier.DataSource as DataTable).Rows.Count > 0)
                {
                    grvSupplier.OptionsBehavior.Editable = true;
                }
            }
            catch (Exception ex)
            {
                //MessageBox.Show("Chương trình phát sinh lỗi: " + e.ToString() + "\nVui lòng liên hệ với bộ phận quản trị gần nhất");
                iControls.ErrorHistory.TSysError.RaiseError(ex, "Supplier", "OnUpdate");
            }
        }
        public override void OnUpdate(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            try
            {
                throw new Exception("Loi");
                if (IsBeforsave())
                {
                    SaveData();
                    
                    grvSupplier.OptionsBehavior.Editable = false;
                }
            }
            catch (Exception ex)
            {
                iControls.ErrorHistory.TSysError.RaiseError(ex, "Supplier", "OnUpdate");
            }
        }
        public override void OnDel(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            try
            {
                if (IsBeforDel())
                    DeleteData();
                MessageBox.Show("Dữ liệu đã được xoá!");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Chương trình phát sinh lỗi: " + e.ToString() + "\nVui lòng liên hệ với bộ phận quản trị gần nhất");
                iControls.ErrorHistory.TSysError.RaiseError(ex, "Supplier", "OnUpdate");
            }
        }
        #endregion

        private void Form_Load(object sender, EventArgs e)
        {
            this.grdSupplier.SetData(objSupp.GetAll());
            //ithis.grdSupplier.ShowContextMenu = true;
        }
    }
}
